public class AutoConvert {
	public static void main(String[] args) {
		// float c = 80l;
		// System.out.println(c);
		//细节1 有多种类型的数据混合运算时。
		//系统首先自动将所有数据转换成容量最大的那种数据类型，然后再进行计算
		int n1 = 10;//ok
		//float d1 = n1 + 1.1;//error n1 + 1.1结果类型为double
		//double d1  = n1 +1.1;//ok n1 + 1.1结果类型为double
		float d1 = n1 + 1.1f;//ok n1 + 1.1f结果类型为float
		
	    //细节2 当我们把精度（容量）大，的数据类型赋值给精度（容量）小的数据类型时
	    //就会报错，反之就会进行自动类型转换
	     //int n2 = 1.1;//error double -> int

	    //细节3 byte,short和char之间不会相互自动转换
	    //当把具体值赋给byte,short时，（1）先判断该数是否在byte范围内，如果是就可以
	     //byte b1 = 10; //ok 范围-128~127
	     //short s1 = 326;
	     //int n3 = 1;//n3类型为int
	     //byte b2 = n3;//error 原因：如果用变量赋值，已经有了类型，所以要判断类型
	     //char c1 = b1;//error 原因byte不能自动转换为char

	     //细节4 byte short 和char三者可以进行计算，在计算时首先转换为int类型
	     byte b2 = 1;
	     byte b3 = 2;
	     short s1 = 1;
		 //short s2 = b2 + s1; //error b2 + s1 -> int
		 int s2 = b2 + s1;
		 //byte b4 = b2 + b3; //error b2 + b3 -> int

		 //boolean不参与转换
		 //boolean pass = true;
		 //int num100 = pass; //error  
		 //自动提升原则：表达式结果的类型自动提升为操作数中最大的类型
		 float f1 = 12023.1294721974236;
		 byte b4 = 1;
		 short s3 = 100;
		 int num200 = 1;
		 float num300 = 1.1f;
		 double num500 = b4 + s3 + num200 + num300; //float -> double
	}
}